sessionInfo()
Introduction
This is our Final Project R-markdown document. Our group explored data from two public government databases. The first is titled “DASH - Youth Risk Behavior Surveillance System (YRBSS)”. The dataset monitors six categories of priority health behaviors among youth and young adults. The data acquired is from 1991-2015, and can be accessed through data.world. The link for this data is: https://catalog.data.gov/dataset/dash-youth-risk-behavior-surveillance-system-yrbss-high-school
The remaining data was sourced from US national census data. We explored population demographics of education, income, employment, and race.
Charts
Non-Aggregated Measures Analysis
Our first non-aggregated measures analysis was a boxplot that broke down youth behavioral survey responses down by grade and question type, allowing one to see how the responses change as the one progresses through the grades. Pages were set to flip through the data by year. Joins were used in this visualization to illustrate the median household income of the state where each data point was collected: lower income values are plotted in red, while higher income values are plotted in green. (we realized that the bunching of darker green circles around the center of the boxplots is most likely just a software effect of tableau when handling a high samplze size, rather that the data suggesting a relationship between highest median income and the average response value)
This visualization shows us a couple patterns and intersting things about risky behavior and youth: First, some risk factors, such as physical fighting and suicide consideration, tend to decrease as one progresses through Highschool, while some factors remain flat (diet) and some increase (alcohol, cigarette, and marijuana use). ) 
Related, we wondered what the differences between the oldest and most recent data values. This second histogram illustrates the differences in responses between 1991 (gold) and 2015 (purple), grouped again by grade and category. Some average greater risk data value seems to show a moderate decrease between the 24 years, such as physical fighting, suicide consideration, currrent alcohol and cigarette use. Diet appears to have similar ranges of responses between the two years, while marijuana use was the only value to significantly increase in recent history. 
Aggregated Measures Analysis
[description] 
Scatter Plots
[description] 
Crosstabs
Our crosstab visualization illustrated the KPI of young adults, subcategorized by sex and race.
Our KPI weighted data from the greater risk data questions, the lesser risk data questions, factored by the proportion of adults with bachelor’s degree in that geographic state.
You can see the trends for race grouped by gender. There appears to be a some commonality between the groups and subgroups regarding their health risk for each variable. Weight loss seems to be the most at-risk variable, followed by alcohol use for girls and physical fighting (and alcohol use) for boys. 
The crosstab was restructred, this time grouping the sexes next to each other in each race. This grouping suggests that more variation exists between females of different races, than the variation that exists between the males and females of the same race.
Lastly, our KPI heatmap showed a significant relationship between geographic location and KPI score. The map below shows groupings of KPI values, with states geographically closer to each other sharing similar KPI scores as well. 
Barcharts
[description] 
Here are our Shiny Plots
Boxplot
It’s a plotly boxplot that shows the distribution of the various risk factors by topic. You can change which topics you see when you get the data. 
Histogram
This histogram measures the frequency of risk factors as it relates to their intensity. Becasue the counts for each race were not equal, in order to compare them they are all normalized to where the largest count for a window equals one. Also, you can change the bin sizes on the fly. 
Scatter Plot
The labels aren’t showing up for some reason, but the x axis is percentage of white people in a state and the y axis is that states average risk factor. It doesn’t appear very well correlated and there is one outlier (Hawaii). 
Crosstab
This is a cross tab that shows the various average risk factors in the boxes, depeding on what race is on the x axis and what state is on the y axis. Some values are missing unfortunatley. But that’s to be expected. You wouldn’t think Hawaii would have many American Indians right? The KPI is dependent on wether that risk factor is especially high or low. 
Barchart
We’ve got this wonderful barchart whose x labels won’t show up. The x axis is risk factor values. It’s faceted by Race and the y axis is topic. The black numbers represent how large of a risk factor it is and the blue numbers represent how far away it is from the window average risk factor, which is the red number. There really shouldn’t be multiple red bars on the tops, but that only appears in the notebook file. If you go to the shinyapp, they aren’t there. 
LS0tCnRpdGxlOiAnPGNlbnRlcj48Yj5Zb3V0aCBTdXJ2ZXkgb2YgUmlza3kgQmVoYXZpb3I8L2I+PC9jZW50ZXI+JwphdXRob3I6ICI8Y2VudGVyPjxiPktpbWJlcmx5IEhvbGxtYW4sIEt5bGUgS2F0emVuLCBSb3kgTGluPC9iPjwvY2VudGVyPiIKZGF0ZTogIjxjZW50ZXI+TWF5IDAzLCAyMDE3PC9jZW50ZXI+IgpvdXRwdXQ6CiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogeWVzCiAgaHRtbF9ub3RlYm9vazoKICAgIGRlcHRoOiAzCiAgICBudW1iZXJfc2VjdGlvbnM6IHllcwogICAgdG9jOiB5ZXMKLS0tCiFbXSguLi8wMyBWaXN1YWxpemF0aW9ucy9mbGFnLnBuZykKCmBgYHtyfQpzZXNzaW9uSW5mbygpCmBgYAoKYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9CmtuaXRyOjpvcHRzX2NodW5rJHNldChlY2hvID0gVFJVRSwgZmlnLmFsaWduID0gImNlbnRlciIpCm9wdGlvbnMobWF4LnByaW50ID0gNDApCgpgYGAKCiMqKkludHJvZHVjdGlvbioqClRoaXMgaXMgb3VyIEZpbmFsIFByb2plY3QgUi1tYXJrZG93biBkb2N1bWVudC4gT3VyIGdyb3VwIGV4cGxvcmVkIGRhdGEgZnJvbSB0d28gcHVibGljIGdvdmVybm1lbnQgZGF0YWJhc2VzLiAKVGhlIGZpcnN0IGlzIHRpdGxlZCAiREFTSCAtIFlvdXRoIFJpc2sgQmVoYXZpb3IgU3VydmVpbGxhbmNlIFN5c3RlbSAoWVJCU1MpIi4gVGhlIGRhdGFzZXQgbW9uaXRvcnMgc2l4IGNhdGVnb3JpZXMgb2YgcHJpb3JpdHkgaGVhbHRoIGJlaGF2aW9ycyBhbW9uZyB5b3V0aCBhbmQgeW91bmcgYWR1bHRzLiBUaGUgZGF0YSBhY3F1aXJlZCBpcyBmcm9tIDE5OTEtMjAxNSwgYW5kIGNhbiBiZSBhY2Nlc3NlZCB0aHJvdWdoIGRhdGEud29ybGQuIFRoZSBsaW5rIGZvciB0aGlzIGRhdGEgaXM6IGh0dHBzOi8vY2F0YWxvZy5kYXRhLmdvdi9kYXRhc2V0L2Rhc2gteW91dGgtcmlzay1iZWhhdmlvci1zdXJ2ZWlsbGFuY2Utc3lzdGVtLXlyYnNzLWhpZ2gtc2Nob29sCgpUaGUgcmVtYWluaW5nIGRhdGEgd2FzIHNvdXJjZWQgZnJvbSBVUyBuYXRpb25hbCBjZW5zdXMgZGF0YS4gV2UgZXhwbG9yZWQgcG9wdWxhdGlvbiBkZW1vZ3JhcGhpY3Mgb2YgZWR1Y2F0aW9uLCBpbmNvbWUsIGVtcGxveW1lbnQsIGFuZCByYWNlLgoKIyoqRXh0cmFjdC1UcmFuc2xhdGUtTG9hZCAoRVRMKSoqCkluIG9yZGVyIHRvIGV4dHJhY3QgdGhlIHBlcnRpbmVudCBkYXRhIGZyb20gb3VyIHJhdyBDU1ZzLCB3ZSBnZW5lcmF0ZWQgYSBudW1iZXIgb2YgUi1zY3JpcHRzIHRoYXQgdGlkaWVkIGN1cnJlbnQgZGF0YSBhbmQgZXhjaXNlZCBub25yZWxldmFudCBkYXRhIHRoYXQgd2VyZSBub3QgdXNlZCBpbiBvdXIgVGFibGVhdSBhbmQgU2hpbnlBcHAgdmlzdWFsaXphdGlvbnMuIE91ciBjbGVhbmVkLXVwIChwb3N0LUVUTCkgdmVyc2lvbnMgd2VyZSB0aGVuIHVwbG9hZGVkIHRvIHRoZSBkYXRhLndvcmxkIHNlcnZlcnMsIGF2YWlsYWJsZSBmb3IgZG93bmxvYWRpbmcgYW5kIHF1ZXJ5aW5nLgpEYXRhIG1hbmlwdWxhdGlvbnMgd2lsbCBiZSBzaG93biBmb3Igb25seSBvbmUgQUNTIENTViBmaWxlLCBidXQgc2ltaWxhciBtZXRob2RzIHdlcmUgdXNlZCBmb3IgdGhlIHJlbWFpbmluZyB0aHJlZSBmaWxlcy4KCiMjIDEuIFJhdyAoUHJlLUVUTCkgQ1NWczoKQXMgeW91IGNhbiBzZWUgYmVsb3csIHRoZSByYXcgY3N2IGNvbnRhaW5zIGRhdGEgYWNyb3NzIG1vcmUgdmFyaWFibGVzIHRoYW4gd2VyZSBuZWNlc3NhcnkgZm9yIHRoaXMgcHJvamVjdC4gCmBgYHtyIGdldHByZX0KbGlicmFyeShrbml0cikKc291cmNlKCIuLi8wMSBEYXRhL2dldHByZU1FRC5SIikKa2FibGUocHJlTUVELCBkaWdpdHMgPSAwKQpgYGAKCiMjIDIuIEVUTCBzY3JpcHQgdG8gZGlzdGlsbCBkYXRhOgpQbHlyIGFuZCBkcGx5ciBmdW5jdGlvbnMgd2VyZSB1c2VkIHRvIGZpbHRlciBvdXQgdGhlIHBlcnRpbmVudCBpbmZvcm1hdGlvbi4gU2VwYXJhdGUgc2NyaXB0cyB3ZXJlIHVzZWQgZm9yIGVhY2ggZmlsZS4gCmBgYHtyIGV2YWw9RkFMU0UsIGVjaG89VFJVRX0KY29kZSA9IHJlYWRMaW5lcygiLi4vMDEgRGF0YS9ldGxNRUQuciIpCnNob3coY29kZSkKYGBgCgojIyAzLiBGaW5pc2hlZCAoUG9zdC1FVEwpIENTViBmaWxlOgpXb3JrYWJsZSBDU1ZzIGNvbnRhaW4gb25seSBuYXRpb25hbCBkYXRhIGdyb3VwZWQgYnkgc3RhdGUgKGV4Y2wuIERDIGFuZCBQdWVydG8gUmljbykgYW5kIHBlcnRhaW5pbmcgdG8gcG9wdWxhdGlvbiBkZW1vZ3JhcGhpYyBkZWxpbmVhdGlvbnMgb2YgYWdlLCBzZXgsIHJhY2UsIGluY29tZSwgYW5kIGVtcGxveW1lbnQuClRoZSBmaW5pc2hlZCBDU1YgZG9jdW1lbnRzIHdlcmUgbXVjaCBzbWFsbGVyIGluIHNpemUsIGFuZCBiZXR0ZXIgZW5hYmxlZCB1cyB0byBpbnZlc3RpZ2F0ZSB0cmVuZHMgYW5kIGNvcnJlbGF0aW9ucyBiZXR3ZWVuIGRhdGFzZXRzLgpgYGB7ciBnZXRwb3N0fQpsaWJyYXJ5KGtuaXRyKQpzb3VyY2UoIi4uLzAxIERhdGEvZ2V0cG9zdE1FRC5SIikKa2FibGUocG9zdE1FRCwgZGlnaXRzID0gMCkKYGBgCgoKIyAqKkNoYXJ0cyoqCiMjIE5vbi1BZ2dyZWdhdGVkIE1lYXN1cmVzIEFuYWx5c2lzCk91ciBmaXJzdCBub24tYWdncmVnYXRlZCBtZWFzdXJlcyBhbmFseXNpcyB3YXMgYSBib3hwbG90IHRoYXQgYnJva2UgZG93biB5b3V0aCBiZWhhdmlvcmFsIHN1cnZleSByZXNwb25zZXMgZG93biBieSBncmFkZSBhbmQgcXVlc3Rpb24gdHlwZSwgYWxsb3dpbmcgb25lIHRvIHNlZSBob3cgdGhlIHJlc3BvbnNlcyBjaGFuZ2UgYXMgdGhlIG9uZSBwcm9ncmVzc2VzIHRocm91Z2ggdGhlIGdyYWRlcy4gUGFnZXMgd2VyZSBzZXQgdG8gZmxpcCB0aHJvdWdoIHRoZSBkYXRhIGJ5IHllYXIuIEpvaW5zIHdlcmUgdXNlZCBpbiB0aGlzIHZpc3VhbGl6YXRpb24gdG8gaWxsdXN0cmF0ZSB0aGUgbWVkaWFuIGhvdXNlaG9sZCBpbmNvbWUgb2YgdGhlIHN0YXRlIHdoZXJlIGVhY2ggZGF0YSBwb2ludCB3YXMgY29sbGVjdGVkOiBsb3dlciBpbmNvbWUgdmFsdWVzIGFyZSBwbG90dGVkIGluIHJlZCwgd2hpbGUgaGlnaGVyIGluY29tZSB2YWx1ZXMgYXJlIHBsb3R0ZWQgaW4gZ3JlZW4uICh3ZSByZWFsaXplZCB0aGF0IHRoZSBidW5jaGluZyBvZiBkYXJrZXIgZ3JlZW4gY2lyY2xlcyBhcm91bmQgdGhlIGNlbnRlciBvZiB0aGUgYm94cGxvdHMgaXMgbW9zdCBsaWtlbHkganVzdCBhIHNvZnR3YXJlIGVmZmVjdCBvZiB0YWJsZWF1IHdoZW4gaGFuZGxpbmcgYSBoaWdoIHNhbXBsemUgc2l6ZSwgcmF0aGVyIHRoYXQgdGhlIGRhdGEgc3VnZ2VzdGluZyBhIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGhpZ2hlc3QgbWVkaWFuIGluY29tZSBhbmQgdGhlIGF2ZXJhZ2UgcmVzcG9uc2UgdmFsdWUpCgpUaGlzIHZpc3VhbGl6YXRpb24gc2hvd3MgdXMgYSBjb3VwbGUgcGF0dGVybnMgYW5kIGludGVyc3RpbmcgdGhpbmdzIGFib3V0IHJpc2t5IGJlaGF2aW9yIGFuZCB5b3V0aDoKRmlyc3QsIHNvbWUgcmlzayBmYWN0b3JzLCBzdWNoIGFzIHBoeXNpY2FsIGZpZ2h0aW5nIGFuZCBzdWljaWRlIGNvbnNpZGVyYXRpb24sIHRlbmQgdG8gZGVjcmVhc2UgYXMgb25lIHByb2dyZXNzZXMgdGhyb3VnaCBIaWdoc2Nob29sLCB3aGlsZSBzb21lIGZhY3RvcnMgcmVtYWluIGZsYXQgKGRpZXQpIGFuZCBzb21lIGluY3JlYXNlIChhbGNvaG9sLCBjaWdhcmV0dGUsIGFuZCBtYXJpanVhbmEgdXNlKS4KKQohW2JveHBsb3RdKC4uLzAzIFZpc3VhbGl6YXRpb25zL2JveHBsb3Rqb2luczIucG5nKQoKUmVsYXRlZCwgd2Ugd29uZGVyZWQgd2hhdCB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUgb2xkZXN0IGFuZCBtb3N0IHJlY2VudCBkYXRhIHZhbHVlcy4gVGhpcyBzZWNvbmQgaGlzdG9ncmFtIGlsbHVzdHJhdGVzIHRoZSBkaWZmZXJlbmNlcyBpbiByZXNwb25zZXMgYmV0d2VlbiAxOTkxIChnb2xkKSBhbmQgMjAxNSAocHVycGxlKSwgZ3JvdXBlZCBhZ2FpbiBieSBncmFkZSBhbmQgY2F0ZWdvcnkuIApTb21lIGF2ZXJhZ2UgZ3JlYXRlciByaXNrIGRhdGEgdmFsdWUgc2VlbXMgdG8gc2hvdyBhIG1vZGVyYXRlIGRlY3JlYXNlIGJldHdlZW4gdGhlIDI0IHllYXJzLCBzdWNoIGFzIHBoeXNpY2FsIGZpZ2h0aW5nLCAgc3VpY2lkZSBjb25zaWRlcmF0aW9uLCBjdXJycmVudCBhbGNvaG9sIGFuZCBjaWdhcmV0dGUgdXNlLiBEaWV0IGFwcGVhcnMgdG8gaGF2ZSBzaW1pbGFyIHJhbmdlcyBvZiByZXNwb25zZXMgYmV0d2VlbiB0aGUgdHdvIHllYXJzLCB3aGlsZSBtYXJpanVhbmEgdXNlIHdhcyB0aGUgb25seSB2YWx1ZSB0byBzaWduaWZpY2FudGx5IGluY3JlYXNlIGluIHJlY2VudCBoaXN0b3J5LgohW2JveHBsb3QyXSguLi8wMyBWaXN1YWxpemF0aW9ucy9ib3hwbG90am9pbnMyMi5wbmcpCgojIyBBZ2dyZWdhdGVkIE1lYXN1cmVzIEFuYWx5c2lzCltkZXNjcmlwdGlvbl0KIVthZ10oLi4vMDMgVmlzdWFsaXphdGlvbnMvZmxhZy5wbmcpCgojIyBTY2F0dGVyIFBsb3RzCltkZXNjcmlwdGlvbl0KIVtzcF0oLi4vMDMgVmlzdWFsaXphdGlvbnMvZmxhZy5wbmcpCgoKIyMgQ3Jvc3N0YWJzCk91ciBjcm9zc3RhYiB2aXN1YWxpemF0aW9uIGlsbHVzdHJhdGVkIHRoZSBLUEkgb2YgeW91bmcgYWR1bHRzLCBzdWJjYXRlZ29yaXplZCBieSBzZXggYW5kIHJhY2UuIAoKT3VyIEtQSSB3ZWlnaHRlZCBkYXRhIGZyb20gdGhlIGdyZWF0ZXIgcmlzayBkYXRhIHF1ZXN0aW9ucywgdGhlIGxlc3NlciByaXNrIGRhdGEgcXVlc3Rpb25zLCBmYWN0b3JlZCBieSB0aGUgcHJvcG9ydGlvbiBvZiBhZHVsdHMgd2l0aCBiYWNoZWxvcidzIGRlZ3JlZSBpbiB0aGF0IGdlb2dyYXBoaWMgc3RhdGUuIAoKWW91IGNhbiBzZWUgdGhlIHRyZW5kcyBmb3IgcmFjZSBncm91cGVkIGJ5IGdlbmRlci4gVGhlcmUgYXBwZWFycyB0byBiZSBhIHNvbWUgY29tbW9uYWxpdHkgYmV0d2VlbiB0aGUgZ3JvdXBzIGFuZCBzdWJncm91cHMgcmVnYXJkaW5nIHRoZWlyIGhlYWx0aCByaXNrIGZvciBlYWNoIHZhcmlhYmxlLiBXZWlnaHQgbG9zcyBzZWVtcyB0byBiZSB0aGUgbW9zdCBhdC1yaXNrIHZhcmlhYmxlLCBmb2xsb3dlZCBieSBhbGNvaG9sIHVzZSBmb3IgZ2lybHMgYW5kIHBoeXNpY2FsIGZpZ2h0aW5nIChhbmQgYWxjb2hvbCB1c2UpIGZvciBib3lzLiAKIVtDcm9zc3RhYktQSV0oLi4vMDMgVmlzdWFsaXphdGlvbnMvQ3Jvc3N0YWIrS1BJMi5wbmcpCgpUaGUgY3Jvc3N0YWIgd2FzIHJlc3RydWN0cmVkLCB0aGlzIHRpbWUgZ3JvdXBpbmcgdGhlIHNleGVzIG5leHQgdG8gZWFjaCBvdGhlciBpbiBlYWNoIHJhY2UuIFRoaXMgZ3JvdXBpbmcgc3VnZ2VzdHMgdGhhdCBtb3JlIHZhcmlhdGlvbiBleGlzdHMgYmV0d2VlbiBmZW1hbGVzIG9mIGRpZmZlcmVudCByYWNlcywgdGhhbiB0aGUgdmFyaWF0aW9uIHRoYXQgZXhpc3RzIGJldHdlZW4gdGhlIG1hbGVzIGFuZCBmZW1hbGVzIG9mIHRoZSBzYW1lIHJhY2UuICAKIVtDcm9zc3RhYktQSV0oLi4vMDMgVmlzdWFsaXphdGlvbnMvQ3Jvc3N0YWIrS1BJMS5wbmcpCkxhc3RseSwgb3VyIEtQSSBoZWF0bWFwIHNob3dlZCBhIHNpZ25pZmljYW50IHJlbGF0aW9uc2hpcCBiZXR3ZWVuIGdlb2dyYXBoaWMgbG9jYXRpb24gYW5kIEtQSSBzY29yZS4gVGhlIG1hcCBiZWxvdyBzaG93cyBncm91cGluZ3Mgb2YgS1BJIHZhbHVlcywgd2l0aCBzdGF0ZXMgZ2VvZ3JhcGhpY2FsbHkgY2xvc2VyIHRvIGVhY2ggb3RoZXIgc2hhcmluZyBzaW1pbGFyIEtQSSBzY29yZXMgYXMgd2VsbC4gCiFbQ3Jvc3N0YWJLUEltYXBdKC4uLzAzIFZpc3VhbGl6YXRpb25zL0Nyb3NzdGFiK0tQSTMucG5nKQoKIyMgQmFyY2hhcnRzCltkZXNjcmlwdGlvbl0KIVtiY10oLi4vMDMgVmlzdWFsaXphdGlvbnMvZmxhZy5wbmcpCgoKCiMgKipMaW5rIHRvIFNoaW55IGFwcCBhcHBsaWNhdGlvbioqCkhlcmUgaXMgb3VyIGxpbmsgdG8gb3VyIHNoaW55IGFwcCBhcHBsaWNhdGlvbjogaHR0cHM6Ly9rYXR6ZW4uc2hpbnlhcHBzLmlvL2tobHNoaW55LwoKIyBIZXJlIGFyZSBvdXIgU2hpbnkgUGxvdHMKCiMjIEJveHBsb3QKSXQncyBhIHBsb3RseSBib3hwbG90IHRoYXQgc2hvd3MgdGhlIGRpc3RyaWJ1dGlvbiBvZiB0aGUgdmFyaW91cyByaXNrIGZhY3RvcnMgYnkgdG9waWMuIFlvdSBjYW4gY2hhbmdlIHdoaWNoIHRvcGljcyB5b3Ugc2VlIHdoZW4geW91IGdldCB0aGUgZGF0YS4KIVtzaGlueWJ4XSguLi8wMyBWaXN1YWxpemF0aW9ucy9zaGlueWJveC5wbmcpCgojIyBIaXN0b2dyYW0KVGhpcyBoaXN0b2dyYW0gbWVhc3VyZXMgdGhlIGZyZXF1ZW5jeSBvZiByaXNrIGZhY3RvcnMgYXMgaXQgcmVsYXRlcyB0byB0aGVpciBpbnRlbnNpdHkuIEJlY2FzdWUgdGhlIGNvdW50cyBmb3IgZWFjaCByYWNlIHdlcmUgbm90IGVxdWFsLCBpbiBvcmRlciB0byBjb21wYXJlIHRoZW0gdGhleSBhcmUgYWxsIG5vcm1hbGl6ZWQgdG8gd2hlcmUgdGhlIGxhcmdlc3QgY291bnQgZm9yIGEgd2luZG93IGVxdWFscyBvbmUuIEFsc28sIHlvdSBjYW4gY2hhbmdlIHRoZSBiaW4gc2l6ZXMgb24gdGhlIGZseS4KIVtzaGlueWhzXSguLi8wMyBWaXN1YWxpemF0aW9ucy9zaGlueWhpc3QucG5nKQoKIyMgU2NhdHRlciBQbG90ClRoZSBsYWJlbHMgYXJlbid0IHNob3dpbmcgdXAgZm9yIHNvbWUgcmVhc29uLCBidXQgdGhlIHggYXhpcyBpcyBwZXJjZW50YWdlIG9mIHdoaXRlIHBlb3BsZSBpbiBhIHN0YXRlIGFuZCB0aGUgeSBheGlzIGlzIHRoYXQgc3RhdGVzIGF2ZXJhZ2UgcmlzayBmYWN0b3IuIEl0IGRvZXNuJ3QgYXBwZWFyIHZlcnkgd2VsbCBjb3JyZWxhdGVkIGFuZCB0aGVyZSBpcyBvbmUgb3V0bGllciAoSGF3YWlpKS4gCiFbc2hpbnlzcF0oLi4vMDMgVmlzdWFsaXphdGlvbnMvc2hpbnlwbG90LnBuZykKCiMjIENyb3NzdGFiClRoaXMgaXMgYSBjcm9zcyB0YWIgdGhhdCBzaG93cyB0aGUgdmFyaW91cyBhdmVyYWdlIHJpc2sgZmFjdG9ycyBpbiB0aGUgYm94ZXMsIGRlcGVkaW5nIG9uIHdoYXQgcmFjZSBpcyBvbiB0aGUgeCBheGlzIGFuZCB3aGF0IHN0YXRlIGlzIG9uIHRoZSB5IGF4aXMuIFNvbWUgdmFsdWVzIGFyZSBtaXNzaW5nIHVuZm9ydHVuYXRsZXkuIEJ1dCB0aGF0J3MgdG8gYmUgZXhwZWN0ZWQuIFlvdSB3b3VsZG4ndCB0aGluayBIYXdhaWkgd291bGQgaGF2ZSBtYW55IEFtZXJpY2FuIEluZGlhbnMgcmlnaHQ/IFRoZSBLUEkgaXMgZGVwZW5kZW50IG9uIHdldGhlciB0aGF0IHJpc2sgZmFjdG9yIGlzIGVzcGVjaWFsbHkgaGlnaCBvciBsb3cuCiFbc2hpbnljdF0oLi4vMDMgVmlzdWFsaXphdGlvbnMvc2hpbnljcm9zcy5wbmcpCgojIyBCYXJjaGFydApXZSd2ZSBnb3QgdGhpcyB3b25kZXJmdWwgYmFyY2hhcnQgd2hvc2UgeCBsYWJlbHMgd29uJ3Qgc2hvdyB1cC4gVGhlIHggYXhpcyBpcyByaXNrIGZhY3RvciB2YWx1ZXMuIEl0J3MgZmFjZXRlZCBieSBSYWNlIGFuZCB0aGUgeSBheGlzIGlzIHRvcGljLiBUaGUgYmxhY2sgbnVtYmVycyByZXByZXNlbnQgaG93IGxhcmdlIG9mIGEgcmlzayBmYWN0b3IgaXQgaXMgYW5kIHRoZSBibHVlIG51bWJlcnMgcmVwcmVzZW50IGhvdyBmYXIgYXdheSBpdCBpcyBmcm9tIHRoZSB3aW5kb3cgYXZlcmFnZSByaXNrIGZhY3Rvciwgd2hpY2ggaXMgdGhlIHJlZCBudW1iZXIuIFRoZXJlIHJlYWxseSBzaG91bGRuJ3QgYmUgbXVsdGlwbGUgcmVkIGJhcnMgb24gdGhlIHRvcHMsIGJ1dCB0aGF0IG9ubHkgYXBwZWFycyBpbiB0aGUgbm90ZWJvb2sgZmlsZS4gSWYgeW91IGdvIHRvIHRoZSBzaGlueWFwcCwgdGhleSBhcmVuJ3QgdGhlcmUuIAohW3NoaW55YmNdKC4uLzAzIFZpc3VhbGl6YXRpb25zL3NoaW55YmFyLnBuZykK